Redo focus handling in treeview once more
authorMatthias Clasen <mclasen@redhat.com>
Sun, 11 Sep 2016 15:47:55 +0000 (11:47 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 11 Sep 2016 15:47:55 +0000 (11:47 -0400)
The fix for bug 767468 had some unintended side-effects. This is
an attempt at doing the same fix (don't grab focus when we are
grab-shadowed), while avoiding the breakage, by using GTK+'s
internal tracking for grab-shadowed-ness.

https://bugzilla.gnome.org/show_bug.cgi?id=770508

gtk/gtktreeview.c

index a7463cccc472d462e02ae5db2bc10c0229d56b7d..73d355798e3ab1ad39207f2f423dd50a76c60ad3 100644 (file)
@@ -3050,11 +3050,10 @@ static void
 grab_focus_and_unset_draw_keyfocus (GtkTreeView *tree_view)
 {
   GtkWidget *widget = GTK_WIDGET (tree_view);
-  GtkWidget *grab_widget = gtk_grab_get_current ();
 
   if (gtk_widget_get_can_focus (widget) &&
       !gtk_widget_has_focus (widget) &&
-      (!grab_widget || grab_widget == widget))
+      !_gtk_widget_get_shadowed (widget))
     gtk_widget_grab_focus (widget);
 
   tree_view->priv->draw_keyfocus = 0;